﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace sy2_11
{
    public partial class Form1 : Form
    {
        int[] num;
        List<int> primes = new List<int>();
        public Form1()
        {
            InitializeComponent();
            this.Text = "求素数";
        }
        private bool IsPrime(int n)
        {
            // 小于2的数不是素数
            if (n < 2)
                return false;

            // 2是素数
            if (n == 2)
                return true;

            // 偶数不是素数
            if (n % 2 == 0)
                return false;

            // 检查从3到平方根的奇数
            for (int i = 3; i <= Math.Sqrt(n); i += 2)
            {
                if (n % i == 0)
                    return false;
            }
            return true;
        }
        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void btnGenerate_Click(object sender, EventArgs e)
        {
            try
            {
                // 获取输入的数字个数                
                int count = int.Parse(txtCount.Text);
                // 解析范围                
                string[] rangeParts = txtRange.Text.Split(new[] { '~' }, StringSplitOptions.RemoveEmptyEntries);
                int min = int.Parse(rangeParts[0].Trim());
                int max = int.Parse(rangeParts[1].Trim());
                // 生成随机数                
                num = new int[count];
                Random random = new Random();
                for (int i = 0; i < count; i++)
                {
                    num[i] = random.Next(min, max + 1);
                }
                // 显示所有随机数                
                txtAllNumbers.Text = string.Join(Environment.NewLine, num);
                // 清空之前的素数结果                
                txtPrimes.Clear();
                primes.Clear();
                // 启用素数提取按钮                
                btnExtractPrimes.Enabled = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show("输入格式错误：" + ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnExtractPrimes_Click(object sender, EventArgs e)
        {
            primes.Clear();

            // 筛选素数
            foreach (int number in num)
            {
                if (IsPrime(number))
                {
                    primes.Add(number);
                }
            }

            // 显示素数
            txtPrimes.Text = string.Join(Environment.NewLine, primes);
        }
    }
}
